<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="test"></div>
  
  <!-- 引入react核心库 -->
  <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
  <!-- 用于支持react操作DOM -->
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
  <!-- 用于将jsx转为js -->
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
  
  <script type="text/babel">
    /**
     *   高阶函数的定义：
     *       满足条件之一就是高阶函数：1.函数接收的参数是一个函数，2.函数调用返回值依然是一个函数。
     *   函数的柯里化：
     *       通过函数连续调用返回值是一个函数，且能多次持续接收参数最后统一处理的函数编码形式
     */  
    
    class Login extends React.Component{
      //初始化状态
      state={
        username:'',
        password:''
      }

      //保存表单数据到状态中
      saveFormData=(dataType)=>{
        return (event)=>{
          this.setState({[dataType]:event.target.value})
        }
      }

      //处理表单提交的回调
      handleSubmit=(event)=>{
        event.preventDefault();//阻止表单默认提交
        const {username,password}=this.state;
        alert(`你输入的账号是：${username}，你输入是密码是：${password}`)
      }
      render(){
        return(
          <form action="http://www.baidu.com" onSubmit={this.handleSubmit}>
            账号：<input onChange={this.saveFormData('username')} type="text" name='username'/>  
            密码：<input onChange={this.saveFormData('password')} type="password" name='password'/> 
            <button>登录</button> 
          </form>
        )
      }
    }

    ReactDOM.render(<Login/>,document.getElementById('test'))
  </script>
</body>
</html>